﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcApplication1.Models;

namespace MvcApplication1.Controllers
{
    public class ForoController : Controller
    {

        IRepositorioUsuario1 repositorioUsuarios;
        IRepositorioForo repositorioForo;
        IRepositorioLiga repositorioLiga;

        public ForoController() : this(new RepositorioLiga(), new RepositorioUsuario(), new RepositorioForo()) { }

        public ForoController(IRepositorioLiga repoLiga, IRepositorioUsuario1 repoUsuario, IRepositorioForo repoForo)
        {
            repositorioLiga = repoLiga;
            repositorioUsuarios = repoUsuario;
            repositorioForo = repoForo;
        }
        //
        // GET: /Foro/

        public ActionResult Index()
        {
            var topics = repositorioForo.TodosLosTopics();

            return View("Index", topics);
        }

        //
        // GET: /Foro/Details/5

        public ActionResult Details(int id)
        {
            Topic topic = repositorioForo.getTopic(id);

            List<Comentario> comentariosTopic = repositorioForo.getTopic(id).Comentarios.ToList<Comentario>();

            Foro foro = new Foro(topic, comentariosTopic);

            return View("Details", foro);
        }

        [HttpPost]
        public ActionResult Details(int id, FormCollection collection)
        {
            Comentario c = new Comentario();
            c.Comentario1 = collection["comentarios"];
            c.IDTopic = id;
            c.IDUsuarioCreador = repositorioUsuarios.EncontrarUsuarioNombre(User.Identity.Name).IDUsuario;
            c.Fecha = DateTime.Now;

            repositorioForo.AgregarComentario(c);
            repositorioForo.Save();

            Topic topic = repositorioForo.getTopic(id);

            List<Comentario> comentariosTopic = repositorioForo.getTopic(id).Comentarios.ToList<Comentario>();

            Foro foro = new Foro(topic, comentariosTopic);

            return View("Details", foro);
        }

        //
        // GET: /Foro/Create

        public ActionResult Create()
        {
            if (User.Identity.IsAuthenticated)
            {
                return View("Create");
            }
            else
            {
                return View("NotFound");
            }
        }

        //
        // POST: /Foro/Create

        [HttpPost]
        public ActionResult Create(FormCollection collection)
        {
            try
            {
                if (collection.Get(1).Equals(""))
                {
                    return View("NoExisteTema");
                }
                Topic topic = new Topic();

                Usuario usuarioActual = repositorioUsuarios.EncontrarUsuarioNombre(User.Identity.Name);

                topic.Tema = collection.Get(1);
                topic.Cuerpo = collection.Get(2);
                topic.IDUsuarioCreador = usuarioActual.IDUsuario;
                topic.Fecha = DateTime.Now;

                repositorioForo.AgregarTopic(topic);

                repositorioForo.Save();

                return RedirectToAction("Index");
            }
            catch(Exception e)
            {
                return View();
            }
        }

        //
        // GET: /Foro/Edit/5

        public ActionResult Edit(int id)
        {
            return View();
        }

        //
        // POST: /Foro/Edit/5

        [HttpPost]
        public ActionResult Edit(int id, FormCollection collection)
        {
            try
            {
                // TODO: Add update logic here

                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

    }
    
}
